home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 426-450 / disk_434 / backup / wildcmp.a < prev   
Text File  |  1992-05-06  |  2KB  |  108 lines

  1.  
  2.         section text,code
  3.  
  4.         ;WILDCMP(wild:D0, name:D1)
  5.         ;
  6.         ;   Handles * and ?
  7.         ;
  8.         ;result:  D0, 0 = no match, 1 = match
  9.         ;
  10.         ;auto:
  11.         ;   D2    bi
  12.         ;   A2    wildcard string
  13.         ;   A3    name     string
  14.         ;   A4    back-array (of size MAXB * 2 * 4)
  15.  
  16.         xdef    _WildCmp
  17.  
  18. _WildCmp:    move.l    4(sp),D0
  19.         move.l    8(sp),D1
  20.         movem.l D2/A2-A4,-(sp)
  21.         move.l    D0,A2
  22.         move.l    D1,A3
  23.         sub.l    #128,sp     ; MAXB * 2 * 8
  24.         move.l    sp,A4
  25.  
  26.         moveq.l #0,D2
  27.  
  28. xwcloop     moveq.l #1,D0
  29.         move.b    (A2),D1
  30.         bne    xw1
  31.         tst.b    (A3)
  32.         beq    xwcdone
  33.  
  34. xw1        cmp.b    #$2A,D1
  35.         bne    xw10
  36.         cmp.w    #8,D2        ; MAXB
  37.         bne    xw2
  38.         moveq.l #-1,D0        ; error
  39.         bra    xwcdone
  40. xw2        move.w    D2,D0        ; back[bi][0] = w  i.e. back+bi*8
  41.         asl.w    #3,D0        ; back[bi][1] = n
  42.         move.l    A2,0(A4,D0.w)
  43.         move.l    A3,4(A4,D0.w)
  44.         addq.w    #1,D2
  45.         addq.l    #1,A2
  46.         bra    xwcloop
  47.  
  48. xwgoback    subq.w    #1,D2
  49.         bmi    xw5
  50.         move.w    D2,D0
  51.         asl.w    #3,D0
  52.         move.l    4(A4,D0.w),A0
  53.         tst.b    (A0)
  54.         beq    xwgoback
  55. xw5        tst.w    D2
  56.         bmi    xwcret0
  57.         move.w    D2,D0
  58.         asl.w    #3,D0
  59.         move.l    0(A4,D0.w),A2
  60.         addq.l    #1,A2
  61.         add.l    #1,4(A4,D0.w)
  62.         move.l    4(A4,D0.w),A3
  63.         addq.l    #1,D2
  64.         bra    xwcloop
  65.  
  66. xw10        cmp.b    #$3F,D1
  67.         bne    xw20
  68.         tst.b    (A3)
  69.         bne    xwcbreak
  70.         tst.w    D2
  71.         bne    xwgoback
  72.         bra    xwcret0
  73.  
  74. xw20        move.b    (A3),D0
  75.         cmp.b    #$41,D0
  76.         bcs    xw21
  77.         cmp.b    #$5A,D0
  78.         bhi    xw21
  79.         or.b    #$20,D0
  80. xw21        move.b    (A2),D1
  81.         cmp.b    #$41,D1
  82.         bcs    xw22
  83.         cmp.b    #$5A,D1
  84.         bhi    xw22
  85.         or.b    #$20,D1
  86. xw22        cmp.b    D0,D1
  87.         beq    xwcbreak
  88.         tst.w    D2
  89.         bne    xwgoback
  90.         bra    xwcret0
  91.  
  92. xwcbreak    tst.b    (A2)+
  93.         bne    xwcb1
  94.         subq.l    #1,A2
  95. xwcb1        tst.b    (A3)+
  96.         bne    xwcb2
  97.         subq.l    #1,A3
  98. xwcb2        bra    xwcloop
  99.  
  100. xwcret0     moveq.l #0,D0
  101. xwcdone     add.l    #128,sp         ; MAXB * 2 * 8
  102.         movem.l (sp)+,D2/A2-A4
  103.         rts
  104.  
  105.         END
  106.  
  107.  
  108.